package xueqiu

// realtimeResponse 实时行情响应
// 接口文档: https://stock.xueqiu.com/v5/stock/realtime/quotec.json?symbol=SH000001&extend=detail
type realtimeResponse struct {
	Data []struct {
		Symbol             string      `json:"symbol"`               // 代码 SH000001
		Current            float64     `json:"current"`              // 当前价格
		Percent            float64     `json:"percent"`              // 涨跌幅
		Chg                float64     `json:"chg"`                  // 涨跌额
		Timestamp          int64       `json:"timestamp"`            // 时间戳 毫秒
		Volume             float64     `json:"volume"`               // 成交量
		Amount             float64     `json:"amount"`               // 成交额
		MarketCapital      float64     `json:"market_capital"`       // 总市值
		FloatMarketCapital float64     `json:"float_market_capital"` // 流通市值
		TurnoverRate       float64     `json:"turnover_rate"`        // 换手率
		Amplitude          float64     `json:"amplitude"`            //	振幅
		Open               float64     `json:"open"`                 // 开盘价
		LastClose          float64     `json:"last_close"`           // 昨收价
		High               float64     `json:"high"`                 // 最高价
		Low                float64     `json:"low"`                  // 最低价
		AvgPrice           float64     `json:"avg_price"`            // 均价
		TradeVolume        interface{} `json:"trade_volume"`         // 成交量
		Side               interface{} `json:"side"`                 // 买卖方向
		IsTrade            bool        `json:"is_trade"`             // 是否交易
		Level              int         `json:"level"`                // 交易级别
		TradeSession       interface{} `json:"trade_session"`        // 交易时间段
		TradeType          interface{} `json:"trade_type"`           // 交易类型
		CurrentYearPercent float64     `json:"current_year_percent"` // 年初至今涨跌幅
		TradeUniqueID      interface{} `json:"trade_unique_id"`      // 交易唯一ID
		Type               int         `json:"type"`                 // 类型
		BidApplSeqNum      interface{} `json:"bid_appl_seq_num"`     // 买方委托序号
		OfferApplSeqNum    interface{} `json:"offer_appl_seq_num"`   // 卖方委托序号
		VolumeExt          interface{} `json:"volume_ext"`           // 成交量扩展
		TradedAmountExt    interface{} `json:"traded_amount_ext"`    // 成交额扩展
		TradeTypeV2        interface{} `json:"trade_type_v2"`        // 交易类型V2
		YieldToMaturity    interface{} `json:"yield_to_maturity"`    // 到期收益率
	} `json:"data"`
	ErrorCode        any    `json:"error_code"`
	ErrorDescription string `json:"error_description"`
}

// klineResponse K线数据响应
type klineResponse struct {
	Data struct {
		Symbol string      `json:"symbol"`
		Column []string    `json:"column"`
		Item   [][]float64 `json:"item"`
	} `json:"data"`
	ErrorCode        any    `json:"error_code"` // 错误码, 正确返回整数, 错误返回字符串
	ErrorDescription string `json:"error_description"`
}

// stockQuoteRequest 股票行情请求
type stockQuoteResponse struct {
	Data struct {
		Market struct {
			StatusId     int         `json:"status_id"`
			Region       string      `json:"region"`
			Status       string      `json:"status"`
			TimeZone     string      `json:"time_zone"`
			TimeZoneDesc interface{} `json:"time_zone_desc"`
			DelayTag     int         `json:"delay_tag"`
		} `json:"market"`
		Quote struct {
			CurrentExt               any         `json:"current_ext"`
			Symbol                   string      `json:"symbol"`
			VolumeExt                interface{} `json:"volume_ext"`
			High52W                  float64     `json:"high52w"`
			Delayed                  int         `json:"delayed"`
			Type                     int         `json:"type"`
			TickSize                 float64     `json:"tick_size"`
			FloatShares              int         `json:"float_shares"`
			LimitDown                float64     `json:"limit_down"`
			NoProfit                 interface{} `json:"no_profit"`
			High                     float64     `json:"high"`
			FloatMarketCapital       any         `json:"float_market_capital"`
			TimestampExt             interface{} `json:"timestamp_ext"`
			LotSize                  int         `json:"lot_size"`
			LockSet                  interface{} `json:"lock_set"`
			WeightedVotingRights     interface{} `json:"weighted_voting_rights"`
			Chg                      float64     `json:"chg"`
			Eps                      float64     `json:"eps"`
			LastClose                float64     `json:"last_close"`
			ProfitFour               any         `json:"profit_four"`
			Volume                   int         `json:"volume"`
			VolumeRatio              float64     `json:"volume_ratio"`
			ProfitForecast           any         `json:"profit_forecast"`
			TurnoverRate             float64     `json:"turnover_rate"`
			Low52W                   float64     `json:"low52w"`
			Name                     string      `json:"name"`
			Exchange                 string      `json:"exchange"`
			PeForecast               float64     `json:"pe_forecast"`
			TotalShares              int         `json:"total_shares"`
			Status                   int         `json:"status"`
			IsVieDesc                interface{} `json:"is_vie_desc"`
			SecurityStatus           interface{} `json:"security_status"`
			Code                     string      `json:"code"`
			GoodwillInNetAssets      float64     `json:"goodwill_in_net_assets"`
			AvgPrice                 float64     `json:"avg_price"`
			Percent                  float64     `json:"percent"`
			WeightedVotingRightsDesc interface{} `json:"weighted_voting_rights_desc"`
			Amplitude                float64     `json:"amplitude"`
			Current                  float64     `json:"current"`
			IsVie                    interface{} `json:"is_vie"`
			CurrentYearPercent       float64     `json:"current_year_percent"`
			IssueDate                int64       `json:"issue_date"`
			SubType                  string      `json:"sub_type"`
			Low                      float64     `json:"low"`
			IsRegistrationDesc       string      `json:"is_registration_desc"`
			NoProfitDesc             interface{} `json:"no_profit_desc"`
			MarketCapital            any         `json:"market_capital"`
			Dividend                 interface{} `json:"dividend"`
			DividendYield            interface{} `json:"dividend_yield"`
			Currency                 string      `json:"currency"`
			Navps                    float64     `json:"navps"`
			Profit                   float64     `json:"profit"`
			Timestamp                int64       `json:"timestamp"`
			PeLyr                    float64     `json:"pe_lyr"`
			Amount                   any         `json:"amount"`
			PledgeRatio              float64     `json:"pledge_ratio"`
			TradedAmountExt          interface{} `json:"traded_amount_ext"`
			IsRegistration           string      `json:"is_registration"`
			Pb                       float64     `json:"pb"`
			LimitUp                  float64     `json:"limit_up"`
			PeTtm                    float64     `json:"pe_ttm"`
			Time                     int64       `json:"time"`
			Open                     float64     `json:"open"`
		} `json:"quote"`
		Others struct {
			PankouRatio float64 `json:"pankou_ratio"`
			CybSwitch   bool    `json:"cyb_switch"`
		} `json:"others"`
		Tags []struct {
			Description string `json:"description"`
			Value       int    `json:"value"`
		} `json:"tags"`
	} `json:"data"`
	ErrorCode        any    `json:"error_code"`
	ErrorDescription string `json:"error_description"`
}

// listResponse 股票列表响应
type listResponse struct {
	Data struct {
		Pid      int `json:"pid"`
		Category int `json:"category"`
		Stocks   []struct {
			Symbol      string `json:"symbol"`
			Name        string `json:"name"`
			Type        int    `json:"type"`
			Remark      string `json:"remark"`
			Exchange    string `json:"exchange"`
			Created     int64  `json:"created"`
			Watched     int64  `json:"watched"`
			Category    int    `json:"category"`
			Marketplace string `json:"marketplace"`
		} `json:"stocks"`
	} `json:"data"`
	ErrorCode        any    `json:"error_code"` // 正常为 0, 错误时为字符串错误码
	ErrorDescription string `json:"error_description"`
}
